package savet.util;

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;

/**
 * Componente JFileChooser customizado que confere a existencia de um arquivo
 * para que este nao seja sobrescrito caso o usuário não queira.
 *
 * @author Adisson Marinho
 */
public class CustomFileChooser extends JFileChooser {

    public CustomFileChooser(String currentDirectoryPath, FileSystemView fsv) {
        super(currentDirectoryPath, fsv);
    }

    public CustomFileChooser(File currentDirectory, FileSystemView fsv) {
        super(currentDirectory, fsv);
    }

    public CustomFileChooser(FileSystemView fsv) {
        super(fsv);
    }

    public CustomFileChooser(File currentDirectory) {
        super(currentDirectory);
    }

    public CustomFileChooser(String currentDirectoryPath) {
        super(currentDirectoryPath);
    }

    public CustomFileChooser() {
        super();
    }

    /**
     * Caso seja um dialogo do tipo SAVE_DIALOG, verifica a existencia de
     * arquivo com o mesmo nome e extensão.
     * @see JFileChooser#approveSelection()
     */
    @Override
    public void approveSelection() {
        if (getDialogType() == SAVE_DIALOG) {
            File selectedFile = getSelectedFile();
            if ((selectedFile != null) && selectedFile.exists()) {
                int response = JOptionUtil.yesNoOption("O arquivo " + selectedFile.getName()
                        + " já existe. Deseja substituir o arquivo existente?",
                        "Sobrescrever...");

                if (!JOptionUtil.isYesResult(response)) {
                    return;
                }
            }
        }
        super.approveSelection();
    }
}
